//using System;
//using System.Collections.Generic;
//using System.Linq;
//using System.ServiceModel;
//using AutoMapper;
//using Core;
//using IglooCoder.Commons.WcfNhibernate;
//using Infrastucture;
//using WcfService1.DTO;

//namespace WcfService1
//{
//    // NOTE: You can use the "Rename" command on the "Refactor" MutasiPallet to change the class name "MutasiPalletServices" in code, svc and config file together.
//    [ServiceBehavior(InstanceContextMode = InstanceContextMode.PerCall)]
//    [NHibernateContext]
//    public class MutasiPalletServices : IMutasiPalletServices
//    {
//        private readonly InventoryRepository InventoryRep;
//        private readonly MutasiPalletRepository MutasiPalletRepository;
//        private readonly WcfSessionStorage _session;

//        public MutasiPalletServices()
//        {
//            _session = new WcfSessionStorage();
//            MutasiPalletRepository = new MutasiPalletRepository(_session);
//            InventoryRep = new InventoryRepository(_session);
//        }

//        #region IMutasiPalletServices Members

//        public List<MutasiPalletDTO> GetList(int page, out long recordCount, string sortProperty = null,
//                                             string sortType = "ASC")
//        {
//            var MutasiPallets = new List<MutasiPallet>();
//            var Results = new List<MutasiPalletDTO>();

//            if (string.IsNullOrEmpty(sortProperty))
//            {
//                MutasiPallets = MutasiPalletRepository.GetDataPaged(page, 30).ToList();
//            }
//            else
//            {
//                MutasiPallets = MutasiPalletRepository.GetDataPaged(page, 30, sortProperty, sortType).ToList();
//            }

//            recordCount = MutasiPalletRepository.RecordCount;

//            MutasiPallets.ForEach(x =>
//                                      {
//                                          var MutasiPalletDto = new MutasiPalletDTO();
//                                          Mapper.Map(x, MutasiPalletDto);
//                                          //AutoMapper.Mapper.Map(x.ParentMutasiPallet, MutasiPalletDto.ParentMutasiPallet);
//                                          Results.Add(MutasiPalletDto);
//                                      }
//                );

//            return Results;
//        }

//        public bool Save(MutasiPalletDTO MutasiPalletDTO)
//        {
//            bool res;
//            try
//            {
//                MutasiPallet MutasiPallet =
//                    MutasiPalletRepository.GetDataOne(x => x.NoMutasi == MutasiPalletDTO.NoMutasi);
//                if (MutasiPallet == null)
//                    MutasiPallet = new MutasiPallet();
//                Mapper.Map(MutasiPalletDTO, MutasiPallet);
//                MutasiPalletRepository.SaveOrUpdate(MutasiPallet);
//                res = true;
//                //Update Inventory Pindahkan Palletnya
//                foreach (MutasiPalletDetail mutasiPalletDetail in MutasiPallet.MutasiPalletDetails)
//                {
//                    mutasiPalletDetail.Inventory.KodePallet = MutasiPallet.ToPallet.KodePallet;
//                    InventoryRep.SaveOrUpdate(mutasiPalletDetail.Inventory);
//                }
//            }
//            catch (Exception)
//            {
//                res = false;
//            }

//            return res;
//        }


//        public bool Delete(MutasiPalletDTO MutasiPalletDto)
//        {
//            bool res;
//            try
//            {
//                MutasiPallet MutasiPallet =
//                    MutasiPalletRepository.GetDataOne(x => x.NoMutasi == MutasiPalletDto.NoMutasi);
//                MutasiPalletRepository.Delete(MutasiPallet);
//                res = true;
//            }
//            catch (Exception)
//            {
//                res = false;
//            }

//            return res;
//        }


//        public List<MutasiPalletDTO> GetListByCriteria(Dictionary<String, Object> criteria, string expression, int page,
//                                                       out long recordCount)
//        {
//            var MutasiPallets = new List<MutasiPallet>();
//            var Results = new List<MutasiPalletDTO>();
//            MutasiPallets = MutasiPalletRepository.GetDataPaged(criteria, expression, page, 30).ToList();
//            recordCount = MutasiPalletRepository.RecordCount;
//            MutasiPallets.ForEach(x =>
//                                      {
//                                          var MutasiPalletDto = new MutasiPalletDTO();
//                                          Mapper.Map(x, MutasiPalletDto);
//                                          Results.Add(MutasiPalletDto);
//                                      }
//                );

//            return Results;
//        }


//        public List<MutasiPalletDTO> GetAllMutasiPallet()
//        {
//            List<MutasiPallet> MutasiPallets = MutasiPalletRepository.FetchAll().ToList();
//            var Results = new List<MutasiPalletDTO>();
//            MutasiPallets.ForEach(x =>
//                                      {
//                                          var MutasiPalletDto = new MutasiPalletDTO();
//                                          Mapper.Map(x, MutasiPalletDto);
//                                          Results.Add(MutasiPalletDto);
//                                      }
//                );

//            return Results;
//        }


//        public MutasiPalletDTO GetMutasiPallet(String NoMutasi)
//        {
//            MutasiPallet MutasiPallet = MutasiPalletRepository.GetDataOne(x => x.NoMutasi == NoMutasi);
//            var MutasiPalletDto = new MutasiPalletDTO();
//            Mapper.Map(MutasiPallet, MutasiPalletDto);
//            return MutasiPalletDto;
//        }

//        public List<MutasiPalletDTO> GetMutasiPalletList(string NoMutasi)
//        {
//            List<MutasiPallet> MutasiPallets =
//                MutasiPalletRepository.GetDataList(x => x.NoMutasi.Contains(NoMutasi)).ToList();
//            var Results = new List<MutasiPalletDTO>();
//            MutasiPallets.ForEach(x =>
//                                      {
//                                          var MutasiPalletDto = new MutasiPalletDTO();
//                                          Mapper.Map(x, MutasiPalletDto);
//                                          Results.Add(MutasiPalletDto);
//                                      }
//                );

//            return Results;
//        }


//        public bool DeleteDetail(MutasiPalletDetailDTO MutasiPalletDetailDTO)
//        {
//            bool res;
//            try
//            {
//                var MutasiPalletDetail =
//                    MutasiPalletRepository.Session.Get<MutasiPalletDetail>(MutasiPalletDetailDTO.MutasiPalletDetailId);
//                MutasiPalletRepository.DeleteDetail(MutasiPalletDetail, MutasiPalletDetailDTO.MutasiPalletDetailId);
//                res = true;
//            }
//            catch (Exception)
//            {
//                res = false;
//            }

//            return res;
//        }

//        public string GetLastNoMutasi()
//        {
//            string res = MutasiPalletRepository.GetMaxNumber();
//            return res ?? string.Empty;
//        }

//        public bool SendEmail(MutasiPalletDTO obj)
//        {
//            var mailServices = new MailServices();
//            MutasiPallet Obj = MutasiPalletRepository.GetDataOne(x => x.NoMutasi == obj.NoMutasi);
//            obj = Mapper.Map(Obj, obj);
//            return mailServices.SendEmail(obj,string.Empty);
//        }

//        #endregion
//    }
//}